package com.example.myletcodelearing.one

import android.util.Log
import java.lang.StringBuilder
import java.util.*
import kotlin.collections.ArrayList
import kotlin.collections.HashMap
import kotlin.math.abs


/**
 * @author tgw
 * @date 2022/11/7
 * https://leetcode.cn/problems/valid-parentheses/comments/
给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串 s ，判断字符串是否有效。

有效字符串需满足：

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
 

示例 1：

输入：s = "()"
输出：true
示例 2：

输入：s = "()[]{}"
输出：true
示例 3：

输入：s = "(]"
输出：false



 */

fun main(args: Array<String>) {
    var op = Solution24.Solution()
    var num = "()[]"
    var result = op.isValid(num)


    print("打印：$result")


}

private class Solution24 {
    internal class Solution {

        fun isValid(s: String): Boolean {

            var stack = Stack<Char>()
            s.forEach {
                when {
                    it =='('-> {
                        stack.push(')')
                    }
                    it == '{' -> {
                        stack.push('}')
                    }
                    it =='[' -> {
                        stack.push(']')
                    }
                    stack.isEmpty()||  it != stack.pop() -> {

                        return false
                    }
                }
            }


            return stack.isEmpty()
        }


    }


}
